home *** CD-ROM | disk | FTP | other *** search
/ TOS Silver 2000 / TOS Silver 2000.iso / Tools / TWILIGHT / TL_SOURC.E / NEU! / TWILIGHT.H < prev   
Encoding:
C/C++ Source or Header  |  1996-04-09  |  12.3 KB  |  359 lines

  1. /*********************************************************************/
  2. /*                                                                                            */
  3. /*  TWILIGHT.H - Includedatei für TwiLight-Schonermodule                      */
  4. /*  Beginn:          16.03.1993                                             */
  5. /*     Erweiterung:     ab    Anfang 1994                                         */
  6. /*  Letzte Änderung: 09.04. 1996                                                   */
  7. /*                                                                   */
  8. /*  Achtung:                                                         */
  9. /*  Neue Funktionen und Variablen der 2.0 (Vorversion) sind noch     */
  10. /*  nicht alle in TWILIGHT.H übernommen!                             */
  11. /*                                                                   */
  12. /*                                                                   */
  13. /*                                                                                          */
  14. /*  Autor:           Delirium Arts                                          */
  15. /*                                                                   */
  16. /*                                                                                          */
  17. /*    Tabsize=3                                                                             */
  18. /*********************************************************************/
  19.  
  20.  
  21. #ifndef __TWILIGHT
  22. #define __TWILIGHT
  23.  
  24. /* Limits */
  25.  
  26.  
  27. #define MAX_COL        100            /* max. number of sprites which strikes together... */
  28. #define MAX_SPRITES    200            /* max. number of sprites... */
  29.  
  30. /* some types... */
  31.  
  32. /* some types... */
  33.  
  34. #ifndef __PORTAB__
  35. #define __PORTAB__
  36.  
  37. typedef     void                 VOID;    /* VOID type */
  38. typedef     unsigned char     UBYTE;   /* unsigned 8 bit integer */
  39. typedef     unsigned int     UWORD;   /* unsigned 16 bit integer */
  40.  
  41. #endif   /* __PORTAB__ */
  42.  
  43.  
  44. typedef     signed char     SBYTE;   /* signed 8 bit integer */
  45. typedef     signed int         SWORD;   /* signed 16 bit integer */
  46. typedef     signed long     SLONG;   /* signed 32 bit integer */
  47. typedef     unsigned long     ULONG;   /* unsigned 32 bit integer */
  48. typedef    signed int        SCODE;    /* Status Code */
  49. typedef     VOID *            XPOINT;     /* pointer to anything */
  50. typedef  SBYTE *            STRING;    /* String */
  51.  
  52.  
  53. typedef struct                    /* Structure for tl_play_mouse */
  54.  {
  55.     UWORD    button;                /* Status of the mouse buttons; bit 0 and 1 */
  56.     SWORD x;                        /* relative x-position of mouse. writable! */
  57.     SWORD y;                        /* y-position. Read the manual for more infos */
  58.  }TL_MOUSE;
  59.  
  60. typedef struct                    /* Structure for tl_sprite */
  61.  {
  62.     SWORD screen_flag;        /* 0: Sprite is visible, -1: it isn't... */
  63.     SWORD object[MAX_COL];    /* number of sprites*4(!), with which the */
  64.  }COLLISION;                    /* painted one crashes. It can crash max.
  65.                                          100 other sprites...
  66.                                          At the end of this list you find -1
  67.                                          If object[0]=-1, the object doesn't crash */
  68.  
  69.  
  70. typedef struct                    /* for the OBJ_STRUCT */
  71.  {
  72.     XPOINT obj_data;            /* Pointer to the Sprite-Data */
  73.     XPOINT obj_mask;            /* Pointer to the Mask */
  74.  }DATA_MASK;
  75.  
  76. typedef struct                 /* Information about the objects */
  77.  {
  78.     UWORD width;                /* what? ;-) */
  79.     UWORD height;
  80.     UWORD animation;            /* Number of animations-1 */
  81.     DATA_MASK data[];            /* Pointers to the datas... */
  82.  }OBJ_STRUCT;
  83.  
  84. typedef struct                    /* Sprite status block */
  85.  {
  86.     SWORD    x;                    /* x-Position des Sprites auf dem Schirm */
  87.     SWORD y;                 /* y... */
  88.     UWORD width;             /* Nochmal die Breite des Sprites */
  89.     UWORD height;             /* Höhe... */
  90.     SWORD dx;                 /* So viel bewegt sich das Sprite bei jedem */
  91.     SWORD dy;                 /*    Aufruf von tl_sprite in x- bzw. y-Richtung */
  92.     SBYTE ani_count;         /* Zähler für die Animationsstufen */
  93.     UBYTE ani_speed;        /* nach wieviel Durchgängen den Zähler eins runter */
  94.     UWORD act_ani;            /* Welche Animation gerade dargestellt wird. */
  95.     OBJ_STRUCT *objects; /* Zeiger auf das Objekt */
  96.  }SPRITE_STAT;
  97.  
  98.  
  99. typedef struct                    /* Sprite table; returned by tl_all_sprites */
  100.  {
  101.     SPRITE_STAT *sprite[MAX_SPRITES];     /* ^to the sprite stati */
  102.  }SPRITE_TAB;
  103.  
  104. typedef struct            /* structure for Color-Table (CLUT) */
  105.  {
  106.     UWORD r;                /* one WORD for R, G, B... */
  107.     UWORD g;
  108.     UWORD b;
  109.  } COLOR;
  110.  
  111.  
  112.  
  113. typedef struct                 /* the TwiLight-Info-Structure */
  114.  {                                    /* see manual! */
  115.     UWORD    tl_version;
  116.     UWORD    tl_handle;
  117.     UWORD    max_x;
  118.     UWORD    max_y;
  119.     UWORD    vscr_x;
  120.     UWORD    vscr_y;
  121.     UWORD    vscr_w;
  122.     UWORD    vscr_h;
  123.     UWORD max_colors;
  124.     UWORD    palette;
  125.     UWORD    planes;
  126.     UWORD raster_op;
  127.     UBYTE cpu[4];
  128.     UBYTE fpu[4];
  129.     UBYTE mch[4];
  130.     UBYTE snd[4];
  131.     UBYTE    *tl_screen_flag;
  132.     STRING tl_path_adr;
  133.     VOID     *tl_screen_adr;
  134.     ULONG    tl_mem;
  135.     ULONG    tl_aes_global;
  136.     ULONG    tl_vdi_pb;
  137.     UWORD    tl_flags;
  138.     SCODE    cdecl    (*tl_check)(VOID);
  139.     SCODE    cdecl    (*tl_dim_col)(UWORD value);
  140.     ULONG    cdecl    (*tl_mod_time)(VOID);
  141.     VOID  cdecl    (*tl_set_col)(COLOR *tab,UWORD anzahl);
  142.     VOID  cdecl    (*tl_scrn_restore)(VOID);
  143.     SCODE cdecl    (*tl_wait)(UWORD time);
  144.     VOID  cdecl    (*tl_soundplay)(XPOINT adr,ULONG len,UWORD mode);
  145.     VOID  cdecl    (*tl_soundstop)(VOID);
  146.     VOID  cdecl    (*tl_paula)(STRING file);
  147.     UBYTE tl_lang;
  148.     UBYTE tl_reserved2a[3];
  149.     UWORD tl_back_col;            /* Neu ab V1.4ß: Vordergrund- und Hintergrundfarbe */ 
  150.     UWORD tl_fore_col;
  151.     TL_MOUSE *cdecl (*tl_play_mouse)(VOID);
  152.     SCODE cdecl    (*tl_scroll)(UWORD anz,STRING text);
  153.  
  154. /* Die Sprite-Library (SPRITE.OVL) */
  155.     VOID   cdecl    (*tl_sprite_col)(COLOR *tab,UWORD anzahl);
  156.     SCODE  cdecl    (*tl_dither)(UWORD planes,UWORD breite,UWORD hoehe,XPOINT tab,XPOINT ziel,XPOINT quelle);
  157.     ULONG  cdecl    (*tl_sprite_init)(XPOINT buffer,ULONG buf_len,XPOINT obj_struct,UWORD width,UWORD height,UWORD color_flag,UWORD restore_flag);
  158.     XPOINT cdecl (*tl_sprite)(UWORD nummer);
  159.     XPOINT cdecl (*tl_convert)(VOID *quelle,VOID *ziel,UWORD breite,UWORD hoehe,UWORD planes,XPOINT farbtab,UWORD farben,XPOINT dithertab);
  160.  
  161. /* Neu ab Version 2.0: */
  162.     VOID    cdecl (*tl_new_dial)(XPOINT dial_adr);
  163.     SCODE cdecl (*tl_get_cookie)(ULONG id,ULONG wert); 
  164.     XPOINT tl_phys_scrn;
  165.     UWORD tl_scrn_format;
  166.     UWORD tl_line_len;
  167.  
  168. /* Erweiterte Sprite-Library (SPRITE.OVL ab TL-Version 2.0) */
  169.     XPOINT cdecl (*tl_sprite_all)(STRING filename,UWORD farbflag);
  170.     SCODE cdecl (*tl_sprite_del)(VOID);
  171.     XPOINT cdecl (*tl_sprite_conv)(XPOINT *cinfo,UWORD farbflag,XPOINT dithertab,XPOINT farbtab);
  172.     SWORD cdecl (*tl_sprite_set)(UWORD object,UWORD sprite,SWORD x,SWORD y,SWORD dx,SWORD dy,UWORD ani_speed);
  173.     SCODE cdecl (*tl_bload)(STRING file, SWORD mode, XPOINT *adr, ULONG *size);
  174.  
  175.  
  176. /* Thread-Library (THREADS.OVL ab TL-Version 2.0) */
  177.     SCODE  (*tl_threads_init)(SWORD anzahl, ULONG stack_len);
  178.     VOID   (*tl_threads_exit)(VOID);
  179.     SWORD  (*tl_thread_install)(XPOINT routine);
  180.     VOID   (*tl_threads_stop)(VOID);
  181.     SCODE  (*tl_thread_msg)(SWORD id, SWORD msg);
  182.     VOID   (*tl_threads_do)(VOID);
  183.     SCODE  (*tl_thread_event)(VOID);    
  184.  
  185. }TL_INFO;
  186.  
  187.  
  188. typedef struct
  189. {
  190.     UWORD    length_of_xkonfig;
  191.     VOID     (*xroutine)(VOID);
  192.     UBYTE     *info_string;
  193.     UWORD    number_of_objects;
  194.     VOID     *object1;
  195.     VOID     *objectn;
  196. }XKONFIG;
  197.  
  198. typedef struct{
  199.     ULONG    tlm_magic;
  200.     UWORD tlm_version;
  201.     UWORD    tlm_min_acc;
  202.     UBYTE tlm_name[24];
  203.     UBYTE tlm_author[24];
  204.     UWORD tlm_icon[48];
  205.     ULONG tlm_mem_req;
  206.     UWORD flags;
  207.     XKONFIG *tlm_konfig;
  208. }MODULE_INFO;
  209.  
  210.     
  211.  
  212. /* Makros */
  213.  
  214. #define OK        0
  215.  
  216. #ifndef FALSE
  217. #define TRUE     1
  218. #define FALSE     0
  219. #endif
  220. #ifndef NULL
  221. #define NULL    ((VOID *) 0L)
  222. #endif
  223. #define UNUSED(x) x = x
  224.  
  225. /* Flags des Moduls;     Handbuch: Seite 25-26 (1. Auflage)
  226.                                   bzw. Seite 30-31 (2. Auflage Nov. 1994) */
  227.  
  228. #define TL_NOFLAG            0
  229. #define TL_CHANGESCREEN 1
  230. #define TL_CHANGECOLORS 2
  231. #define TL_NEEDVSYNCS   4
  232. #define TL_CLEARMOUSE   8
  233. #define TL_DARKENSCREEN 16
  234. #define TL_CLEARSCREEN  32
  235. #define TL_NEEDSPRITES  64
  236. #define TL_NEEDTHREADS  128
  237. #define TL_NEEDMC020    256
  238. #define TL_NEEDFPU      512
  239. #define TL_PLAYSAMPLE   1024
  240. #define TL_NEED_F_VIDEO 4096
  241. #define TL_NOCHECK        8192
  242. #define TL_ZOOM         16384
  243.  
  244.  
  245. /* Macros for Sound */
  246.  
  247. #define M_6        0x80         /* Mono,  6 kHz */
  248. #define M_12    0x81        /* Mono, 12 kHz */
  249. #define M_25    0x82        /* Mono, 25 kHz */
  250. #define M_50    0x83        /* Mono, 50 kHz */
  251. #define S_6        0x00         /* Stereo,  6 kHz */
  252. #define S_12    0x01        /* Stereo, 12 kHz */
  253. #define S_25    0x02        /* Stereo, 25 kHz */
  254. #define S_50    0x03        /* Stereo, 50 kHz */
  255. #define MR_6    0x180        /* Repeat Mono,  6 kHz */
  256. #define MR_12    0x181        /* Repeat Mono, 12 kHz */
  257. #define MR_25    0x182        /* Repeat Mono, 25 kHz */
  258. #define MR_50    0x183        /* Repeat Mono, 50 kHz */
  259. #define SR_6    0x100        /* Repeat Stereo,  6 kHz */
  260. #define SR_12    0x101        /* Repeat Stereo, 12 kHz */
  261. #define SR_25    0x102        /* Repeat Stereo, 25 kHz */
  262. #define SR_50    0x103        /* Repeat Stereo, 50 kHz */
  263.  
  264.  
  265. /* Macros for tl_info -- see Manual! */
  266.  
  267. #define _tl_version         (tl_struct->tl_version)
  268. #define _tl_handle         (tl_struct->tl_handle)
  269. #define _max_x                (tl_struct->max_x)
  270. #define _max_y                (tl_struct->max_y)
  271. #define _vscr_x            (tl_struct->vscr_x)
  272. #define _vscr_y            (tl_struct->vscr_y)
  273. #define _vscr_w            (tl_struct->vscr_w)
  274. #define _vscr_h            (tl_struct->vscr_h)
  275. #define _max_colors        (tl_struct->max_colors)
  276. #define _palette            (tl_struct->palette)
  277. #define _planes             (tl_struct->planes)
  278. #define _raster_op        (tl_struct->raster_op)
  279. #define _cpu                (tl_struct->cpu)
  280. #define _fpu                (tl_struct->fpu)
  281. #define _mch                (tl_struct->mch)
  282. #define _snd                (tl_struct->snd)
  283. #define _tl_screen_flag    (tl_struct->tl_screen_flag)
  284. #define _tl_path_adr        (tl_struct->tl_path_adr)
  285. #define _tl_screen_adr    (tl_struct->tl_screen_adr)
  286. #define _tl_mem            (tl_struct->tl_mem)
  287. #define _tl_aes_global    (tl_struct->tl_aes_global)
  288. #define _tl_vdi_pb        (tl_struct->tl_vdi_pb)
  289. #define _tl_flags            (tl_struct->tl_flags)
  290. #define tl_check            (tl_struct->tl_check)
  291. #define tl_dim_col(value)    (tl_struct->tl_dim_col(value))
  292. #define tl_mod_time        (tl_struct->tl_mod_time)
  293. #define tl_set_col(tab,anzahl)    (tl_struct->tl_set_col(tab,anzahl))
  294. #define tl_scrn_restore    (tl_struct->tl_scrn_restore)
  295. #define tl_wait(time)    (tl_struct->tl_wait(time))
  296. #define tl_soundplay(adr,len,mode) (tl_struct->tl_soundplay(adr,len,mode))
  297. #define tl_soundstop        (tl_struct->tl_soundstop)
  298. #define tl_paula(adr)    (tl_struct->tl_paula(adr))
  299. #define _tl_lang            (tl_struct->tl_lang)
  300. #define tl_back_col        (tl_struct->tl_back_col)
  301. #define tl_fore_col        (tl_struct->tl_fore_col)
  302. #define tl_play_mouse    (tl_struct->tl_play_mouse)
  303. #define tl_scroll(anz,text) (tl_struct->tl_scroll(anz,text))
  304. #define tl_sprite_col(tab,anzahl)    (tl_struct->tl_sprite_col(tab,anzahl))
  305. #define tl_dither(planes,breite,hoehe,tab,ziel,quelle) (tl_struct->(planes,breite,hoehe,tab,ziel,quelle))
  306. #define tl_sprite_init(buffer,buf_len,obj_struct,width,height,color_flag,restore_flag) (tl_struct->tl_sprite_init(buffer,buf_len,obj_struct,width,height,color_flag,restore_flag)
  307. #define tl_sprite(num)     (tl_struct->tl_sprite(num))
  308. #define tl_convert(quelle,ziel,breite,hoehe,planes,farbtab,farben,dithertab) (tl_struct->tl_convert(quelle,ziel,breite,hoehe,planes,farbtab,farben,dithertab))
  309. #define tl_new_dial(dial_adr) (tl_struct->tl_new_dial(dial_adr))
  310. #define tl_get_cookie(id,wert) (tl_struct->tl_get_cookie(id,wert))
  311. #define _tl_phys_scrn (tl_struct->tl_phys_scrn)
  312. #define _tl_scrn_format (tl_struct->tl_scrn_format)
  313. #define _tl_line_len (tl_struct->tl_line_len)
  314. #define tl_sprite_all(filename,farbflag) (tl_struct->tl_sprite_all(filename,farbflag))
  315. #define tl_sprite_del     (tl_struct->tl_sprite_del)
  316. #define tl_sprite_conv(cinfo,farbflag,dithertab,farbtab) (tl_struct->tl_sprite_conv(cinfo,farbflag,dithertab,farbtab))
  317. #define tl_sprite_set(object,sprite,x,y,dx,dy,ani_speed) (tl_struct->tl_sprite_set(object,sprite,x,y,dx,dy,ani_speed))
  318. #define tl_bload(file,mode,adr,size) (tl_struct->tl_bload (file,mode,adr,size))
  319.  
  320. #define tl_threads_init(anzahl, stack_len)   (tl_struct->tl_threads_init(anzahl, stack_len))
  321. #define tl_threads_exit   (tl_struct->tl_threads_exit)
  322. #define tl_thread_install(routine) (tl_struct->tl_thread_install(routine))
  323. #define tl_threads_stop   (tl_struct->tl_threads_stop)
  324. #define tl_thread_msg(id, msg)     (tl_struct->tl_thread_msg(id, msg)
  325. #define tl_threads_do     (tl_struct->tl_threads_do)
  326. #define tl_thread_event  (tl_struct->tl_thread_event)    
  327.  
  328.  
  329.  
  330.  
  331.  
  332.  
  333. /* Makro für Sound: Spiele nur dann Sound, wenn die Adresse als SLONG größer als 0 ist! */
  334.  
  335. #define tl_sound(adr,len,mode); {if ((SLONG)adr>0) tl_soundplay(adr,len,mode);}
  336.  
  337.  
  338. /* Unterfunktion um Speicher zu holen */
  339.  
  340. /* XPOINT xmalloc(ULONG speicher, WORD mode); */
  341.  
  342. XPOINT xmalloc(ULONG speicher, UWORD mode)
  343.  {
  344.     register SLONG    temp;
  345.     
  346.     if (-32==(temp=(SLONG)Mxalloc(speicher, mode)))
  347.         temp=(SLONG)Malloc(speicher);
  348.     return (XPOINT)temp;
  349.  }
  350.  
  351.  
  352.  
  353. /* Global functions... */
  354.  
  355. VOID RETURN(VOID);
  356.  
  357.  
  358.  
  359. #endif         /* ifndef __TWILIGHT */